GtkImage: Set the window on the gtkiconhelper
authorAlexander Larsson <alexl@redhat.com>
Mon, 24 Jun 2013 12:06:20 +0000 (14:06 +0200)
committerAlexander Larsson <alexl@redhat.com>
Wed, 3 Jul 2013 12:39:26 +0000 (14:39 +0200)
gtk/gtkimage.c

index c6b2dad0d8f8b7da6ee983f521e2eb4e9cee180e..f30ace2571f4ff35c8d31c5564c296511a678d7a 100644 (file)
@@ -149,6 +149,7 @@ struct _GtkImagePrivate
 static gint gtk_image_draw                 (GtkWidget    *widget,
                                             cairo_t      *cr);
 static void gtk_image_unmap                (GtkWidget    *widget);
+static void gtk_image_realize              (GtkWidget    *widget);
 static void gtk_image_unrealize            (GtkWidget    *widget);
 static void gtk_image_get_preferred_width  (GtkWidget    *widget,
                                             gint         *minimum,
@@ -217,6 +218,7 @@ gtk_image_class_init (GtkImageClass *class)
   widget_class->get_preferred_height = gtk_image_get_preferred_height;
   widget_class->get_preferred_height_and_baseline_for_width = gtk_image_get_preferred_height_and_baseline_for_width;
   widget_class->unmap = gtk_image_unmap;
+  widget_class->realize = gtk_image_realize;
   widget_class->unrealize = gtk_image_unrealize;
   widget_class->style_updated = gtk_image_style_updated;
   widget_class->screen_changed = gtk_image_screen_changed;
@@ -1361,9 +1363,25 @@ gtk_image_unmap (GtkWidget *widget)
   GTK_WIDGET_CLASS (gtk_image_parent_class)->unmap (widget);
 }
 
+static void
+gtk_image_realize (GtkWidget *widget)
+{
+  GtkImage *image = GTK_IMAGE (widget);
+  GtkImagePrivate *priv = image->priv;
+
+  GTK_WIDGET_CLASS (gtk_image_parent_class)->realize (widget);
+
+  _gtk_icon_helper_set_window (priv->icon_helper,
+                              gtk_widget_get_window (widget));
+}
+
 static void
 gtk_image_unrealize (GtkWidget *widget)
 {
+  GtkImage *image = GTK_IMAGE (widget);
+  GtkImagePrivate *priv = image->priv;
+
+  _gtk_icon_helper_set_window (priv->icon_helper, NULL);
   gtk_image_reset_anim_iter (GTK_IMAGE (widget));
 
   GTK_WIDGET_CLASS (gtk_image_parent_class)->unrealize (widget);